home *** CD-ROM | disk | FTP | other *** search
/ Chip 2001 June / CHIP Haziran 2001.iso / prog / haziran / 19 / setup.exe / data.z / print_struct.pas < prev    next >
Pascal/Delphi Source File  |  2001-04-11  |  2KB  |  94 lines

  1. unit Print_Struct;
  2.  
  3.  
  4. interface
  5.  
  6. uses
  7.     Windows,
  8.     SysUtils,
  9.     windrvr;
  10.  
  11. function StringToInt (str : STRING) : INTEGER;
  12. function HexToInt(hex : STRING) : INTEGER;
  13. procedure WD_CARD_print(pCard : PWD_CARD; pcPrefix : PCHAR);
  14.  
  15.  
  16. implementation
  17.  
  18. function StringToInt(str : STRING) : INTEGER;
  19. var
  20.     i : INTEGER;
  21.     res : INTEGER;
  22.  
  23. begin
  24.     res := 0;
  25.     for i:=1 to Length(str) do
  26.     if (str[i]>='0') and (str[i]<='9')
  27.     then
  28.         res := res * 10 + Ord(str[i]) - Ord('0')
  29.     else
  30.     begin
  31.         Writeln('Illegal number value');
  32.         StringToInt := 0;
  33.         Exit;
  34.     end;
  35.     StringToInt := res;
  36. end;
  37.  
  38. function HexToInt(hex : STRING) : INTEGER;
  39. var
  40.     i : INTEGER;
  41.     res : INTEGER;
  42.  
  43. begin
  44.     hex := UpperCase(hex);
  45.     res := 0;
  46.     for i:=1 to Length(hex) do
  47.     begin
  48.         if (hex[i]>='0') and (hex[i]<='9')
  49.         then
  50.             res := res * 16 + Ord(hex[i]) - Ord('0')
  51.         else
  52.             if (hex[i]>='A') and (hex[i]<='F')
  53.             then
  54.                 res := res * 16 + Ord(hex[i]) - Ord('A') + 10
  55.             else
  56.                 begin
  57.                     Writeln('Illegal Hex value');
  58.                     HexToInt := 0;
  59.                     Exit;
  60.                 end;
  61.     end;
  62.     HexToInt := res;
  63. end;
  64.  
  65.  
  66. procedure WD_CARD_print(pCard : PWD_CARD; pcPrefix : PCHAR);
  67. var
  68.     i : DWORD;
  69.     item : WD_ITEMS;
  70.  
  71. begin
  72.     for i:=1 to pCard^.dwItems do
  73.     begin
  74.         item := pCard^.Item[i-1];
  75.         Write(STRING(pcPrefix), 'Item ');
  76.         case item.item of
  77.         ITEM_MEMORY:
  78.             Write('Memory: range ', IntToHex(item.Memory.dwPhysicalAddr, 8), '-', IntToHex(item.Memory.dwPhysicalAddr+item.Memory.dwMBytes-1, 8));
  79.         ITEM_IO:
  80.             Write('IO: range $', IntToHex(item.IO.dwAddr, 4), '-$', IntToHex(item.IO.dwAddr+item.IO.dwBytes-1, 4));
  81.         ITEM_INTERRUPT:
  82.             Write('Interrupt: irq ', item.Interrupt.dwInterrupt);
  83.         ITEM_BUS:
  84.             Write('Bus: type ', item.Bus.dwBusType, ' bus number ', item.Bus.dwBusNum, ' slot/func $', IntToHex(item.Bus.dwSlotFunc, 1));
  85.         else
  86.             Write('Invalid item type');
  87.         end;
  88.         Writeln('');
  89.     end;
  90. end;
  91.  
  92. end.
  93.  
  94.